package ar.edu.ufasta.presupuestos.servicios.presupuesto;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import ar.edu.ufasta.presupuestos.logica.entidades.articulo.Articulo;
import ar.edu.ufasta.presupuestos.logica.entidades.remito.RemitoCompra;
import ar.edu.ufasta.presupuestos.logica.entidades.remito.RemitoCompraFabrica;
import ar.edu.ufasta.presupuestos.logica.entidades.remito.RemitoCompraProveedor;

public class RemitoCompraMapper {

	private static RemitoCompraMapper instance;
	private List<RemitoCompra> remitoFabricas; 
	private List<RemitoCompra> remitoProveedores;
	
	public List<RemitoCompra> getRemitoFabricas() {
		return remitoFabricas;
	}

	public void setRemitoFabricas(List<RemitoCompra> remitoFabricas) {
		this.remitoFabricas = remitoFabricas;
	}

	public List<RemitoCompra> getRemitoProveedores() {
		return remitoProveedores;
	}

	public void setRemitoProveedores(List<RemitoCompra> remitoProveedores) {
		this.remitoProveedores = remitoProveedores;
	}

	public static RemitoCompraMapper getInstance() {
		if(instance==null){
			instance = new RemitoCompraMapper();
		}
		return instance;
	}
	
	private RemitoCompraMapper() {
		this.remitoFabricas = new ArrayList<RemitoCompra>();
		this.remitoProveedores = new ArrayList<RemitoCompra>();
	}
	
	public RemitoCompra getRemitoCompra(Articulo articulo){
		RemitoCompra remitoCompra = null;
		if(articulo.getFabrica()!=null){
			for(RemitoCompra remito: this.remitoFabricas){
				RemitoCompraFabrica remitoCompraFabrica = (RemitoCompraFabrica) remito;
				if(remitoCompraFabrica.getFabrica().equals(articulo.getFabrica())){
					remitoCompra = remito;
				}					
			}
			if(remitoCompra==null){
				remitoCompra = new RemitoCompraFabrica();
				remitoCompra.setFechaEmision(new Date());
				remitoCompra.setEstado(0);
//				((RemitoCompraFabrica) remitoCompra).setFabrica(articulo.getFabrica());
				this.remitoFabricas.add(remitoCompra);
			}
		}else if(articulo.getProveedor()!=null){
			for(RemitoCompra remito: this.remitoProveedores){
				RemitoCompraProveedor remitoCompraProveedor = (RemitoCompraProveedor) remito;
				if(remitoCompraProveedor.getProveedor().equals(articulo.getProveedor())){
					remitoCompra = remito;
				}					
			}
			if(remitoCompra==null){
				remitoCompra = new RemitoCompraProveedor();
				remitoCompra.setFechaEmision(new Date());
				remitoCompra.setEstado(0);
//				((RemitoCompraProveedor) remitoCompra).setProveedor(articulo.getProveedor());
				this.remitoProveedores.add(remitoCompra);
			}
		}
		
		return remitoCompra;
	}
	
}
